home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / diskutil / fdf.zoo / fdfstat.c < prev    next >
C/C++ Source or Header  |  1992-04-12  |  3KB  |  134 lines

  1. /*
  2.  * fdstat.c
  3.  *
  4.  * maintain, compute and print out statistics on duplicate files.
  5.  *
  6.  * Roy Bixler
  7.  * March 29, 1991
  8.  *
  9.  * This program is free software; you can redistribute it and/or modify
  10.  * it under the terms of the GNU General Public License as published by
  11.  * the Free Software Foundation; either version 1, or (at your option)
  12.  * any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  22.  */
  23.  
  24.  
  25.  
  26. #include <osbind.h>
  27. #include <stdio.h>
  28. #include <stdlib.h>
  29.  
  30. #include "fdfcomm.h"
  31. #include "fdfstat.h"
  32.  
  33.  
  34.  
  35. static unsigned long total_bytes = 0UL, total_dup_bytes = 0UL;
  36. static unsigned long total_del_bytes = 0UL;
  37. static unsigned int num_files = 0U, num_which_dupd = 0U, num_dups = 0U;
  38.  
  39.  
  40.  
  41. /*
  42.  * update_total_bytes
  43.  *
  44.  * called to update the total number of bytes in duplicate files
  45.  */
  46. void update_total_bytes(long f_size)
  47.  
  48. {
  49.     total_bytes += f_size;
  50. }
  51.  
  52.  
  53.  
  54. /*
  55.  * update_total_del_bytes
  56.  *
  57.  * called to update the total number of bytes in duplicate files
  58.  */
  59. void update_total_del_bytes(long f_size)
  60.  
  61. {
  62.     total_del_bytes += f_size;
  63. }
  64.  
  65.  
  66.  
  67. /*
  68.  * update_num_files
  69.  *
  70.  * called to update the total number of files
  71.  */
  72. void update_num_files()
  73.  
  74. {
  75.     num_files++;
  76. }
  77.  
  78.  
  79.  
  80. /*
  81.  * update_num_which_dupd
  82.  *
  83.  * called to update the total number of files which have duplicates
  84.  */
  85. void update_num_which_dupd()
  86.  
  87. {
  88.     num_which_dupd++;
  89. }
  90.  
  91.  
  92.  
  93. /*
  94.  * update_num_dups
  95.  *
  96.  * called to update the total number of duplicate files and total bytes in same
  97.  */
  98. void update_num_dups(unsigned n_dups, long bytes)
  99.  
  100. {
  101.     num_dups += n_dups;
  102.     total_dup_bytes += bytes;
  103. }
  104.  
  105.  
  106.  
  107. /*
  108.  * print_stats
  109.  *
  110.  * tabulate the statistics for this run of 'find duplicates'
  111.  */
  112. void print_stats()
  113.  
  114. {
  115.     printf("Total # of files = %u\n", num_files);
  116.     printf("Total bytes in files = %lu\n\n", total_bytes);
  117.  
  118.     printf("Total # of duplicate file names = %u\n", num_which_dupd);
  119.     printf("Total # of duplicate files = %u\n", num_dups);
  120.     printf("Total bytes in duplicate files = %lu\n", total_dup_bytes);
  121.     if (i_flag)
  122.         printf("Total bytes deleted = %lu\n", total_del_bytes);
  123.     if (num_dups > 0)
  124.         printf("\nAverage duplicate file size = %ld", total_dup_bytes/num_dups);
  125.     if ((num_files > 0) && (num_dups > 0))
  126.         printf("\nAverage # of duplicates per file = %f",
  127.                (float) num_dups/num_files);
  128.     if ((num_which_dupd > 0) && (num_dups > 0))
  129.         printf("\nAverage # of duplicates per duplicate name = %f",
  130.                (float) num_dups/num_which_dupd);
  131.     if (num_dups)
  132.         printf("\n");
  133. }
  134.